Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]

您所在的位置:网站首页 poetry和the poetry区别 Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]

Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]

2024-01-21 22:42| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

一、什么是虚拟环境1. 什么是Python环境

要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题:

python哪里来?这个主要归功于配置的系统环境变量PATH,当我们在命令行中运行程序时,系统会根据PATH配置的路径列表依次查寻是否有可执行文件python(在windows中,省略了后缀.exe),当查寻到该文件时,执行该文件; 如果在所有路径列表中都查找不到,就会报报错:'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。test.py代码中import的模块在哪里找?import的模块包含两类,一类称为标准库,随着python的安装而安装;另一类称为第三方库,使用pip工具或者自己手动安装的包。模块的搜索路径可通过sys.path查看,主要由可执行文件python所在的位置所决定。

Python环境主要包括以下内容:

解释器 python.exe Lib目录 标准库site-pakages目录,默认安装第三方库所在的目录 Scripts目录,包含一些执行文件 包安装管理工具pip.exe打包工具pyinstaller.exe(需要自己安装)… 其他 主要包括python解释器运行时需要的相关依赖文件,文档说明等

Python环境主要由运行python解释器的位置所决定。

2. 什么是虚拟环境

理解了什么是python环境,思考下为什么有虚拟环境的说法。思考以下问题:

有两个项目A和B,如果A和B都要用到某一模块,但版本不相同怎么办?在使用pip安装包时,会发现在安装的时候会安装其它的依赖包,但当我们用pip移除一个包时,却只移除了指定的包

为了解决上面的问题,python使用了虚拟环境这个概念,你可以认为是python环境的多个副本,只是在不同的副本中安装了不同的包。既然叫虚拟环境,总得有点不一样:虚拟环境中一般不包含标准库;不包含python解释器运行时所需的依赖文件;可执行文件全部放于Scripts目录等。

3. 常用工具

知道了什么是虚拟环境,就应该清楚如何去管理虚拟环境,这就离不开虚拟环境管理工具,下面列出了一些常用的工具,并在稍后的内容中对部分工具的使用作简单的介绍。

Virtualenv virtualenv 是非常流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并选择不继承基础版本的包。 venv 考虑到虚拟环境的重要性,Python 从3.3 版本开始,自带了一个虚拟环境模块 venv,关于该模块的详细介绍,可参考 PEP-405 。它的很多操作都和 virtualenv 类似。如果你使用的是python3.3之前版本或者是python2,则不能使用该功能,依赖需要利用virtualenv进行虚拟环境管理。 pipenv pipenv 是Kenneth Reitz(requests的作者)大神的作品。它结合了 Pipfile,pip,和virtualenv,能够有效管理Python多个环境,各种包。并且windows视为一等公民。 Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。 virtualenv能够很好的完成虚拟环境的搭建和python版本的管理,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题 pip能够很好的完成包的管理,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。 conda 支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。 Python Launcher for Windows Python 从3.3版本开始,在 Windows 系统中自带了一个 py.exe 启动工具。如果你是使用 Python.org 官网下载的安装包安装的 Python 3.3(或更新版本)环境,那么可以直接在命令提示符中使用这个工具(在windows中,py.exe会安装在C:\Windows目录)。 py 可以打开默认的 python 提示符; py -2.7 和 py -3 打开对应的 Python 版本,py -0将列出系统中安装了哪些版本的python 二、pipenv

pipenv创建虚拟环境后,会在工程目录生成如下两个文件:

Pipfile:用于保存项目的python版本、依赖包等相关信息。该文件可以单独移放到其他项目内,用于项目虚拟环境的建立和依赖包的安装Pipfile.lock:用于对Pipfile的锁定1. 安装pipenvpip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple

-i选项指定库的安装源,安装源要满足PEP 503的描述,国内常用的源:

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple豆瓣:http://pypi.douban.com/simple/2. 命令概览

学习使用工具/命令的万能大法 – 查看帮助信息。

pipenv -hUsage: pipenv [OPTIONS] COMMAND [ARGS]... Options: --where Output project home information. --venv Output virtualenv information. --py Output Python interpreter information. --envs Output Environment Variable options. --rm Remove the virtualenv. --bare Minimal output. --man Display manpage. --support Output diagnostic information for use in GitHub issues. --site-packages / --no-site-packages Enable site-packages for the virtualenv. [env var: PIPENV_SITE_PACKAGES] --python TEXT Specify which version of Python virtualenv should use. --three / --two Use Python 3/2 when creating virtualenv. --clear Clears caches (pipenv, pip). [env var: PIPENV_CLEAR] -v, --verbose Verbose mode. --pypi-mirror TEXT Specify a PyPI mirror. --version Show the version and exit. -h, --help Show this message and exit. Usage Examples: Create a new project using Python 3.7, specifically: $ pipenv --python 3.7 Remove project virtualenv (inferred from current directory): $ pipenv --rm Install all dependencies for a project (including dev): $ pipenv install --dev Create a lockfile containing pre-releases: $ pipenv lock --pre Show a graph of your installed dependencies: $ pipenv graph Check your installed dependencies for security vulnerabilities: $ pipenv check Install a local setup.py into your virtual environment/Pipfile: $ pipenv install -e . Use a lower-level pip command: $ pipenv run pip freeze Commands: check Checks for PyUp Safety security vulnerabilities and against PEP 508 markers provided in Pipfile. clean Uninstalls all packages not specified in Pipfile.lock. graph Displays currently-installed dependency graph information. install Installs provided packages and adds them to Pipfile, or (if no packages are given), installs all packages from Pipfile. lock Generates Pipfile.lock. open View a given module in your editor. run Spawns a command installed into the virtualenv. scripts Lists scripts in current environment config. shell Spawns a shell within the virtualenv. sync Installs all packages specified in Pipfile.lock. uninstall Uninstalls a provided package and removes it from Pipfile. update Runs lock, then sync.3. pipenv基本使用1)创建虚拟环境

创建工程目录,并进入工程目录

mkdir test cd test

创建虚拟环境

pipenv install `--python 3.8`在这里插入图片描述在这里插入图片描述

如果在该工程不录中没有Pipfile文件,则会自动创建Pipfile和Pipfile.lock两个文件;如果该工程目录中有Pipfile,将安装Pipfile列出的相应依赖包,安装完成后生成Pipfile.lock 可以使用如下参数来定义环境:

--python 3.8 将指定该虚拟环境的python使用3.8的最新版本,有以下两种情况 如果系统已经安装了python3.8,则使用系统已经安装的python3.8版本如果系统中没有python3.8版本 如果已经安装pyenv或者asdf,会提示是否需要使用pyenv或者asdf安装对应版本的python如果没有安装pyenv和asdf,则创建环境失败此外,–python后面跟的参数可以不是版本号,而是安装的python解释器的路径--three / --two 使用 Python 3或者2创建虚拟环境--pypi-mirror 指定安装源--site-packages / --no-site-packages 是否使用python基础环境中的site-packages路径

查看虚拟环境相关信息

#查看工程根目录信息 pipenv --where #查看当前虚拟环境的信息 pipenv --venv #查看python解释器的信息 pipenv --py #查看环境变量选项 pipenv --envs在这里插入图片描述在这里插入图片描述

观察虚拟环境目录的文件 pyvenv.cfg home = d:\programdata\anaconda3 implementation = CPython version_info = 3.8.5.final.0 virtualenv = 20.10.0 include-system-site-packages = false base-prefix = d:\programdata\anaconda3 base-exec-prefix = d:\programdata\anaconda3 base-executable = d:\programdata\anaconda3\python.exe prompt = (test) 这是虚拟环境的配置文件,包含了python环境的相关信息。 .project E:\Projects\test 指定了该虚拟环境对应的工程目录

2)激活虚拟环境pipenv shell在这里插入图片描述在这里插入图片描述

注意:

在激活虚拟环境时,如果在windows上使用powershell,可能在命令行的前面不能显示虚拟环境的名称,比如显示如下信息,但不影响正常使用在这里插入图片描述在这里插入图片描述进入工程目录后,如果直接使用上面的命令激活虚拟环境,而不是使用pipenv install 创建虚拟环境,这时pipenv会自动创建相应的虚拟环境。3)虚拟环境包的管理

包的安装

pipenv install -hUsage: pipenv install [OPTIONS] [PACKAGES]... Installs provided packages and adds them to Pipfile, or (if no packages are given), installs all packages from Pipfile. Options: --system System pip management. [env var: PIPENV_SYSTEM] -c, --code TEXT Install packages automatically discovered from import statements. --deploy Abort if the Pipfile.lock is out-of-date, or Python version is wrong. --site-packages / --no-site-packages Enable site-packages for the virtualenv. [env var: PIPENV_SITE_PACKAGES] --skip-lock Skip locking mechanisms and use the Pipfile instead during operation. [env var: PIPENV_SKIP_LOCK] -e, --editable TEXT An editable Python package URL or path, often to a VCS repository. --ignore-pipfile Ignore Pipfile when installing, using the Pipfile.lock. [env var: PIPENV_IGNORE_PIPFILE] --selective-upgrade Update specified packages. -r, --requirements TEXT Import a requirements.txt file. --extra-index-url TEXT URLs to the extra PyPI compatible indexes to query for package look-ups. -i, --index TEXT Target PyPI-compatible package index url. --sequential Install dependencies one-at-a-time, instead of concurrently. [env var: PIPENV_SEQUENTIAL] -d, --dev Install both develop and default packages [env var: PIPENV_DEV] --keep-outdated Keep out-dated dependencies from being updated in Pipfile.lock. [env var: PIPENV_KEEP_OUTDATED] --pre Allow pre-releases. --python TEXT Specify which version of Python virtualenv should use. --three / --two Use Python 3/2 when creating virtualenv. --clear Clears caches (pipenv, pip). [env var: PIPENV_CLEAR] -v, --verbose Verbose mode. --pypi-mirror TEXT Specify a PyPI mirror. -h, --help Show this message and exit.

常用参数示例:

#使用清华源安装numpy包 pipenv install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple #如果有requirements.txt文件,可以使用下面命令安装requirements.txt列出的包 pipenv install -r path/to/requirements.txt #安装指定版本的numpy pipenv install numpy~=1.22.3 #等价于 numpy==1.22.3 #注意,包的版本号可以使用~=、==、>=、 、 requirements.txt

导出pip所在环境中所安装的所有包,将其输出到requirements.txt文件中

ps2:如何在pycharm使用虚拟环境

在创建pycharm工程时,记得指定python解释器为虚拟环境中Scripts目录下的python.exe即可

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175522.html原文链接:https://javaforall.cn



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3